﻿using Castle.DynamicProxy;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Core.AutoFacService.Abstract
{
	public abstract class AbstractInterceptor : IInterceptor, IAsyncInterceptor
	{
		protected readonly IEnumerable<Assembly> dlls;
		public AbstractInterceptor(IEnumerable<Assembly> dlls)
		{
			this.dlls = dlls;
		}
		public abstract IEnumerable<Type> GetInterceptorTypes();
		public abstract void Intercept(IInvocation invocation);
		public abstract void InterceptAsynchronous(IInvocation invocation);
		public abstract void InterceptAsynchronous<TResult>(IInvocation invocation);
		public abstract void InterceptSynchronous(IInvocation invocation);
	}
}
